3cce5c84ae844d923f9a4f31ba6d330e6f08e3a6,src/edu/stanford/nlp/dcoref/Mention.java,Mention,isDemonym,#Mention#Dictionaries#,1347
Before Change
public boolean isDemonym(Mention m, Dictionaries dict){
String thisString = this.spanToString().toLowerCase();
String antString = m.spanToString().toLowerCase();
if(thisString.startsWith("the ") || thisString.startsWith("The ")) {
thisString = thisString.substring(4);
}
if(antString.startsWith("the ") || antString.startsWith("The ")) antString = antString.substring(4);
if (dict.statesAbbreviation.containsKey(m.spanToString()) && dict.statesAbbreviation.get(m.spanToString()).equals(this.spanToString())
|| dict.statesAbbreviation.containsKey(this.spanToString()) && dict.statesAbbreviation.get(this.spanToString()).equals(m.spanToString())) {
return true;
}
if(dict.demonyms.get(thisString)!=null){
if(dict.demonyms.get(thisString).contains(antString)) return true;
} else if(dict.demonyms.get(antString)!=null){
if(dict.demonyms.get(antString).contains(thisString)) return true;
}
return false;
}
After Change
public boolean isDemonym(Mention m, Dictionaries dict) {
String thisCasedString = this.spanToString();
String antCasedString = m.spanToString();
// The US state matching part (only) is done cased
String thisNormed = dict.lookupCanonicalAmericanStateName(thisCasedString);
String antNormed = dict.lookupCanonicalAmericanStateName(antCasedString);
if (thisNormed != null && thisNormed.equals(antNormed)) {
return true;
}
// The rest is done uncased
String thisString = thisCasedString.toLowerCase(Locale.ENGLISH);
String antString = antCasedString.toLowerCase(Locale.ENGLISH);
if (thisString.startsWith("the ")) {
thisString = thisString.substring(4);
}
if (antString.startsWith("the ")) {
antString = antString.substring(4);
}
Set<String> thisDemonyms = dict.getDemonyms(thisString);
Set<String> antDemonyms = dict.getDemonyms(antString);
if (thisDemonyms.contains(antString) || antDemonyms.contains(thisString)) {
return true;
}
return false;